package com.hh;
/**
 * 静态内部类实现单例模式
 */

import java.io.Serializable;

public class Singleton implements Serializable {
    private Singleton(){

    }

    private static class Instance{
        private static final Singleton SINGLETON=new Singleton();

    }
    public static Singleton getInstance(){
        return Instance.SINGLETON;
    }

    /**
     * 解决序列化破坏单例模式
     *当进行序列化时，会自动调用readResolve方法
     * 查看readObject方法的源码，其中hasResolveMethod()，来查看是否我们定义了readResolve，定义了则执行invokeReadResolve方法
     * 也就是执行我们定义的readResolve方法
     *
     */
    public Object readResolve(){
        return  Instance.SINGLETON;
    }
}
